home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 24 / CU Amiga Magazine's Super CD-ROM 24 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-07].iso / CUCD / Programming / SWI / source / ChangeLog next >
Encoding:
Text File  |  1998-04-15  |  68.5 KB  |  1,888 lines

  1.  
  2.             SWI-Prolog ChangeLog
  3.             ====================
  4.  
  5. VERSION 2.9.10
  6. ==============
  7.  
  8.   * ADDED: dup_stream/2 to copy stream handles.
  9.  
  10.   * ADDED: Allow for specifying stream alias-name to PL_open_stream(),
  11.     also used by open_null_stream/1, so open_null_stream(null) will make
  12.     `null' an aliased null-stream.
  13.  
  14.   * UPDATED: Some parts of the documentation.
  15.  
  16.   * FIXED: Control-C handling on some platforms (notably Solaris 2.5).
  17.  
  18.   * ADDED: options close_on_abort and buffer to open/4.
  19.  
  20.   * FIXED: write(not (a,b)) ommited the space and wrote not(a,b).  Thanks
  21.     to Stefan Mueller.
  22.  
  23. VERSION 2.9.9
  24. =============
  25.  
  26.   * FIXED: Portability problems for Solaris 2.6.
  27.  
  28.   * FIXED: throwing Prolog exceptions on `Broken Pipe' in flush/0 and
  29.     flush_output/1.
  30.  
  31.   * FIXED: detection of limit on datasize on SGI platform.  Thanks to
  32.     Marcello Balduccini.
  33.  
  34.   * FIXED: Possibility of a crash in Symbols(), notably affecting embedded
  35.     systems (at startup).  Thanks to Anton Eliens.
  36.  
  37. The 4 bugs below were reported by Luc Van Oostenryck.  Thanks.
  38.  
  39.   * FIXED: concat_atom/3 if the separator is not an atom.
  40.  
  41.   * FIXED: arg(0, Term, Arg) to fail
  42.  
  43.   * FIXED: atom_char(abc, X) to raise an instantiation fault if the length
  44.     of the atom is not 1.  Also, return integers in the range [1..255] instead
  45.     of [-128..127].
  46.  
  47.   * FIXED: -0xff is now read as -255.  Not sure if -(255) would not be a
  48.     better idea!?
  49.  
  50. VERSION 2.9.8
  51. =============
  52.  
  53.   * WIN32: Replaced various C runtime functions by their native Win32
  54.     versions.
  55.  
  56.   * FIXED: Calling module transparent predicates from the outer foreign
  57.     context using context module NULL to call in module "user", rather than
  58.     in the definition module of the predicate.  Found by Stephane Berhault.
  59.  
  60.   * FIXED: Early switch off the tracer after an abort to avoid tracing
  61.     the hooks.
  62.  
  63.   * ADDED: explain/1 reporting references to undefined predicates (i.e. which
  64.     clauses reference the undefined predicate).  Also explain/1 reporting
  65.     references to XPCE methods.
  66.  
  67.   * FIXED: explain/1 reporting non-existing references to compound terms.
  68.  
  69. VERSION 2.9.7
  70. =============
  71.  
  72.   * FIXED: avoid some warnings to get clean compilation on GCC 2.8.0.
  73.  
  74.   * FIXED: detection of discontiguous predicates (avoids false alarm).
  75.  
  76.   * ADDED: Predicate definition for (*->)/2, mainly to allow for testing
  77.     for its existence and avoid redefinition.
  78.  
  79.   * ADDED: Options to qsave_program/2 may be specified as Name(Value)
  80.     or Name = Value.
  81.  
  82.   * FIXED: `map' option of qsave_program/2.
  83.  
  84.   * FIXED: handling of dynamic predicates import/export by
  85.     qsave_program/[1,2].  found by Lourens van der Meij.
  86.  
  87.   * PORT: fixed pl-load.c for systems supporting the ELF dynamic load
  88.     functions, but not RTLD_LAZY (FreeBSD?)  Lost the name of the guy
  89.     pointing me to this problem.  Thanks anyway!
  90.  
  91.   * FIXED: handling of a functor as key for recorded and frieds, found by
  92.     Lourens van der Meij.
  93.  
  94.   * FIXED: current_stream/3 if a current stream refers to a pipe.  Found
  95.     by Robert van Engelen.
  96.  
  97.   * FIXED: dereferencing symbolic link of argv[0] to find the `real'
  98.     symbol file.  Reported by Milan Zamazal, where this problem caused
  99.     a crash when running SWI-Prolog using M-x run-prolog under Emacs.
  100.  
  101. VERSION 2.9.6
  102. =============
  103.  
  104.   * MODIFIED: list_to_set/2 retains the first, rather then the last
  105.     occurrence of duplicate members to the set.
  106.  
  107.   * FIXED: flag/3 using floating-point numbers for machines that cannot
  108.     address doubles on 4-byte alignment (most RISC processors).
  109.  
  110.   * FIXED: foreign-reference handling of exception terms, causing garbage
  111.     collection problems.  Reported by Robert van Engelen.
  112.  
  113.   * PORT: improved detection and placement of mmap()-ed stacks (Unix sparse
  114.     stack-management) with help of Marcello Balduccini.
  115.  
  116.   * FIXED: clause/3 to add/remove predicate reference-count while holding
  117.     a choicepoint to the predicate.  Reported by Marcello Balduccini.
  118.  
  119.   * ADDED: -c flag to plld to turn it into `plcc', just compiling .c or
  120.     .cc files.  Thanks to Marcello Balduccini.
  121.  
  122.   * MODIFIED: write/1 and friends now only insert spaces before and
  123.     after operators if these are required to be a valid term for read/1.
  124.     The only exception is ,/2, which is written using a space after the
  125.     symbol.  NOTE: foreign packages including <SWI-Stream.h> need
  126.     to be recompiled!!!
  127.  
  128.   * FIXED: current_predicate/2 not consider abolished predicates that
  129.     still exist as `current', so current_predicate(_, Goal), Goal is
  130.     guaranteed not to raise an exception on Goal.  Should fix recent
  131.     reconsult problems in XPCE.
  132.  
  133.   * ADDED: user:message_hook/3 hook for print_message/2 (provisional).
  134.  
  135.   * MODIFIED: Hooks installed by PL_initialise_hook() are called *before*
  136.     the saved-state is loaded, but after the heap is initialised.  This
  137.     implies only foreign predicates may be called from this hook now.
  138.  
  139.   * FIXED: testing of write-permissions for the library index for
  140.     make/0.
  141.  
  142.   * MODIFIED: Toplevel queries are now read from user_input, rather
  143.     than from the current input stream.
  144.  
  145.   * ADDED: feature(history, Depth).  If 0, no history and no history-prompt
  146.     are provided.  This is the default if feature(readline, true) succeeds.
  147.  
  148.   * FIXED: set_feature(Name, Integer)
  149.  
  150.   * FIXED: chdir/absolute_file_name problem, reported by Machiel Jansen.
  151.     Thanks.
  152.  
  153.   * FIXED: erase/1 on records referenced by recorded/3 choicepoints.  Thanks
  154.     to Robert van Engelen.
  155.  
  156.   * FIXED: Reference direction in recorded/3 (also used by findall/3 and
  157.     friends).
  158.  
  159.   * FIXED: Removed various warnings for SunSoft cc compiler.  Fixed
  160.     one error reported by this compiler.
  161.  
  162.   * FIXED: Cite references in online documentation.  Modified/Cleaned
  163.     man/plindex.pl for this.  Fixed a few typos.
  164.  
  165.  
  166. VERSION 2.9.5
  167. =============
  168.  
  169.   * FIXED: dwim_predicate to deal properly with default modules.
  170.  
  171.   * FIXED online manual not to use overstrike by default.  See manual
  172.     for details.  XPCE requires patched prolog/lib/swi_help.pl to work
  173.     properly with this version.
  174.  
  175.   * FIXED: plld for handling -l<lib> correctly in the Unix version, and
  176.     automatically deleting temporary .exp files in Win32.
  177.  
  178.   * FIXED important fix returning address of local variable, found by
  179.     Jean Daniel Fekete.  Thanks.
  180.  
  181.  
  182. VERSION 2.9.4
  183. =============
  184.  
  185.   * FIXED: Various references to the variable stacks for systems requiring
  186.     the stack-shifter.  Thanks to Michirou Yabuki for reporting.
  187.  
  188.   * FIXED: recorded database (and findall/3, bagof/3, setof/3 store) 
  189.     handling of strings.  After retrieval, the string's indirect header
  190.     was incorrect, making unification and equivalence fail.  Thanks to
  191.     Andrew Dadakow for providing me with a simple program illustrating
  192.     the problem.
  193.  
  194. VERSION 2.9.3
  195. =============
  196.  
  197.   * ADDED: (Simple) support for exceptions in the GUI-tracer.
  198.  
  199.   * MODIFIED: PL_extensions array now needs to be explicitely registered
  200.     using PL_register_extensions() for compatibility with Win32.  Documented
  201.     PL_register_extensions().
  202.  
  203.   * FIXED: print/1 to include the `quoted' option as it used to before
  204.     2.9.0.  Thanks to Sam Waugh for noting.
  205.  
  206.   * NEW: plld is now written in C, and adapted for usage on Windows-NT
  207.     and Windows '95.  The latter is incomplete, but useful for creating
  208.     embedded Win32 console applications.  The old plld is available as
  209.     plld.sh in the source distribution.
  210.  
  211.   * FIXED: PL_register_foreign() now declares the function-pointer as
  212.     a void * for C++ code, so it may be used with C++.
  213.  
  214.   * MODIFIED: tmp_file/2 now returns the canonical filename on
  215.     Windows platforms (i.e. c:/temp/base<n>, rather then C:\TEMP\base<n>).
  216.     use prolog_to_os_filename/2 to convert between the two formats.
  217.  
  218.   * FIXED: catch/3 for proper continuation if the recovery goal
  219.     succeeds.
  220.  
  221.   * FIXED: definition of ulong on some platforms for the new pl-global.h
  222.     module.
  223.  
  224.  
  225. VERSION 2.9.2
  226. =============
  227.  
  228.   * CLEANUP: Removed various unreachable statements reported by the
  229.     SGI native compiler.
  230.  
  231.   * FIXED: Unresolved message for S__fupdatefilepos() using native
  232.     SGI compiler, which does not emit code for inline functions.
  233.  
  234.   * FIXED: diagnosis of `discontiguous' and `redefined' predicates
  235.     while the predicate is reconsulted while it is running.
  236.     
  237.   * FIXED: Posibility of calling alloca(0) in pl-rec.c, spotted by
  238.     Tamas Laufer.  Should fix SCO Unix version.
  239.  
  240.   * FIXED: absolute_file_name/3, generation of multiple solutions:
  241.     avoid regenerating the same solution.  Caused make/0 to slow down
  242.     more and more.
  243.  
  244.   * IMPLEMENTATION: Partial preparation for multi-threading.  Removed
  245.     lots of unnecessary global variables and moved most of the remaining
  246.     ones into three structures defined in the new file pl-global.h.
  247.     Read-only global data is now declared `const', putting it into
  248.     shared memory on good machines/compilers.  As a result, SWI-Prolog
  249.     is a little smaller and faster.
  250.  
  251.     Still need to get rid of the remaining global variables and need
  252.     to embrace all heap-operations to prepare them for the use with
  253.     mutexes.
  254.  
  255.   * FIXED: trace-interception calling on fail-port, causing the GUI
  256.     tracer to crash on some ocasions.
  257.  
  258.   * DELETED: Source file pl-dump.c, implementing save/1, restore/1
  259.     and save_program/1.  These predicates only worked on a few
  260.     platforms anyway.  qsave_program is now the only (and portable)
  261.     saved-state mechanism.
  262.  
  263.   * IMPROVED: Removed limit on number of user-defined arithmetic
  264.     functions.
  265.  
  266.   * IMPROVED: Format ~s accepts both a list of ASCII chars or a
  267.     string (see string/1) object.  Thanks to Peter Ludeman.
  268.  
  269.  
  270. VERSION 2.9.1
  271. =============
  272.  
  273.   * FIXED: auto-detection of -export-dynamic in favour of -rdynamic
  274.     (GNU-ld based systems using ELF binary format not supporting
  275.     -rdynamic, e.g. Solaris using gcc with GNU-ld).  Thanks to
  276.     Volker Weber.
  277.  
  278.   * FIXED: mmap configuration issues, with thanks to Daniel Pun.
  279.  
  280.   * FIXED: some changes to the Makefile(.in) and configure for portability,
  281.     by Joel Faedi.
  282.  
  283.   * FIXED: wouldBindProcedure(), used by $xr_member, used by the explain
  284.     facility.  Could crash.
  285.  
  286.  
  287. VERSION 2.9.0
  288. =============
  289.  
  290.   * ADDED/MODIFIED: The interface to PL_open_query() has changed.
  291.     The debug argument is replaced by a bitwise or'ed flags argument.
  292.     The values FALSE and TRUE have their familiar meaning, making old
  293.     code using these constants compatible. Non-zero values other than
  294.     TRUE (1) will be interpreted different.
  295.  
  296.   * DELETED: display/[1,2] and displayq/[1,2].  Added emulation into
  297.     library(backcomp).
  298.  
  299.   * ADDED: ISO/Quintus compliant write_canonical/[1,2].
  300.  
  301.   * FIXED: recorded database bug for very large terms.
  302.  
  303.   * ADDED: Lots of exception codes.  Roughly, file i/o, external program
  304.     invocation and arithmetic now use exceptions.
  305.  
  306.   * IMPROVED: write/1 and friends now check the return code of the
  307.     low-level I/O functions and fail with exception on read/write
  308.     errors.
  309.  
  310.   * REMOVED: $print/2.  Doesn't appear to be used anywhere.
  311.  
  312.   * ADDED: write_term/[2,3], ISO compliant
  313.  
  314.   * ADDED: ISO compliant exception handling using catch/3 and throw/1,
  315.     including a C-interface for these (PL_throw() and PL_exception())
  316.     Added exception port to the tracer.
  317.  
  318.   * ADDED: abolish/1, ISO compliant.
  319.  
  320.   * FIXED: A is "a" (list as abbreviation for a character).
  321.  
  322.  
  323. VERSION 2.8.7
  324. =============
  325.  
  326.   * FIXED: require/1 to be silent on already defined system predicates.
  327.  
  328.   * FIXED: passing ldflags in plld script.
  329.  
  330.   * CONFIG: Removed checking for -lelf if the system is not asked
  331.     to configure old save/1.
  332.  
  333.   * CONFIG: Modified test/mmap.c to find out whether we should allocate
  334.     from the top or base of the heap.  Added TOPOFHEAP to config.h.  Should
  335.     fix Irix problems.
  336.  
  337.  
  338. VERSION 2.8.6
  339. =============
  340.  
  341.   * Included src/pl.1.in (new file, forgotten in the 2.8.5 release)
  342.  
  343.   * INSTALL: slightly more careful installation of the manpages and
  344.     small problem in configure fixed.
  345.  
  346.  
  347. VERSION 2.8.5
  348. =============
  349.  
  350.   * MAN: Updated manual sources for a couple of recent changes, added
  351.     support for generation of the help/1 database using new tools for
  352.     nroff like generation of plain text from a LaTeX document.  Generated
  353.     all three formats of the manual: HTML, PostScript and plain text.
  354.  
  355.   * FIXED: Installation of the manual page for correct description of the
  356.     pl -dump-runtime-variables.
  357.  
  358.   * ADDED: For machines using memory-mapped stacks (Linux, SunOs, Solaris,
  359.     OSF/1 for example), added heap-size switch: -H.  Default is 256Mbytes.
  360.  
  361.     Size switch now take optional 'm' (Mega), 'k' (Kilo, default) or 'b'
  362.     (bytes): -L32m specifies 32 Mbytes local stack.
  363.  
  364.   * FIXED: print error message if heap allocation above prefect fit
  365.     schema (>1024 bytes) fails (malloc() returns NULL).  All allocation
  366.     failures now call outOfCore().
  367.  
  368. VERSION 2.8.4
  369. =============
  370.  
  371.   * FIXED: PL_{get,put,unify}_pointer() mapping of pointer to integer,
  372.     to ensure all possible pointer values are restored properly.
  373.  
  374.   * CLEANUP: Removed various internal unused functions, changed
  375.     functions to be local that were only called locally.
  376.   
  377.   * MODIFIED: Redesign of various parts of the system to get rid of
  378.     terms living in the permanent heap. This modification allows the
  379.     permanent heap (where malloc() operates) to grow unlimited (used to
  380.     be 64 MB).
  381.  
  382.     + Records (recorda/3, recorded/3, erase/1) are no longer stored
  383.       as copies of the global-terms, but instead as a form of compiled
  384.       code, optimised for copying the object back to the runtime stacks.
  385.  
  386.       Records are also used by findall/3, setof/3 and bagof/3, and these
  387.       predicates have thus been modified too.  The interface between the
  388.       C and Prolog part has changed, making old saved-states worthless.
  389.       Old QLF files work properly.
  390.  
  391.     + Records are also used by the /f goal option of the tracer.  The
  392.       implementation of this has been changed drastically.  The result
  393.       is a lot faster while searching and a bug has been fixed.
  394.  
  395.     + loadXRc() in pl-wic.c has been modified not to store longs, doubles
  396.       and string onto the heap.  This is the desired behaviour anyway.
  397.  
  398.     + Feature storage changed to use a union type, rather then integers
  399.       on the heap.
  400.  
  401.     + Variable analysis in the compiler now used TAG_ATOM|STG_GLOBAL,
  402.       like records, to flag the analysed variables.
  403.  
  404.     + Temporary variable management in read/1 using the same trick.
  405.  
  406.     + Atoms are indexed over a global, resizable, array.
  407.  
  408.     GOOD THINGS
  409.  
  410.     + makeRef() now simply is makeRefLG().
  411.  
  412.     + Trail() is simplified a lot.
  413.  
  414.     + makePtr() (pl-gc.c) no longer deals with heap pointers
  415.  
  416. VERSION 2.8.3
  417. =============
  418.  
  419.   * FIXED: Changed manual to talk about PL_atom_chars(), rather then
  420.     PL_string_from_atom().
  421.  
  422.   * FIXED: oset_addel/3, thanks to Robert van Engelen for both the
  423.     report and the patch.
  424.  
  425.   * FIXED: string_to_list(X, []).
  426.  
  427.   * FIXED: Order and unlinking shared objects.  Now, all files are
  428.     closed before unlinking any shared libraries.  Shared libraries
  429.     are unlinked explicitely only on non-Unix systems.
  430.  
  431.  
  432. VERSION 2.8.2
  433. =============
  434.  
  435.   * FIXED: GC/tracer for clauses holding string objects at particular
  436.     places.  Reported by Andrew Dadakow.
  437.  
  438.   * FIXED: Deleted old pl.mak, and added plwin.mak and plcon.mak for
  439.     rebuilding the sources on Windows.
  440.  
  441.   * FIXED: Typo in the $write_on_* predicates, underlying sformat and
  442.     swritef, causing a crash on > 1024 characters output.  Thanks to
  443.     Shane P. McCarron.
  444.  
  445.  
  446. VERSION 2.8.1
  447. =============
  448.  
  449.   * FIXED: DEC Alpha (64-bit): reading integers    > 2**31-1.  Configuration
  450.     of mmap based sparse stack allocation to deal with the Alpha.  Various
  451.     warnings removed.  Fixed test.pl to be aware of the Alpha where
  452.     necessary (float-3 test).
  453.  
  454.   * FIXED: Garbage collection problem, occurring with a specific
  455.     combination of call-back from C and choicepoint organisation
  456.     in the callback environment.
  457.  
  458.   * FIXED: Tracer `retry <n>' (guitracer only) to take care of garbage
  459.     collected choicepoints.
  460.  
  461.   * FIXED: initialisation of style_check defaults to specify
  462.     singletons, long atoms and discontiguous clauses.  NOTE: THIS MAY
  463.     CAUSE WARNINGS ON OLD CODE.
  464.  
  465.   * ADDED: Several predicates for math in library(quintus).
  466.  
  467.   * FIXED: abolish/2 on active (running) predicates, not to remove the
  468.     NEEDSCLAUSE_GC flag, so the clauses are actually removed if the
  469.     predicates is finished.  Thanks to Paulo Moura, author of LogTalk.
  470.  
  471.   * FIXED: PL_get_arg() when using -L0 -G0 (maximized stacks).  Probably
  472.     only breaks tracing code under these circumstances.
  473.  
  474.  
  475. VERSION 2.8.0
  476. =============
  477.  
  478.   * FIXED: `$qlf_info'/3 (always failed).  Used by the development
  479.     environment under construction.
  480.  
  481.   * RUNTIME SYSTEM: Made various of the debugger options conditional
  482.     on whether or not the system is compiled as runtime system.
  483.  
  484.   * ADDED: more options to user:prolog_event_hook/1 for better
  485.     interaction    with the GUI tracer: possibility to `watch' a
  486.     stack-frames end-of-lifetime.
  487.  
  488.   * FIXED: writeq('%') to write '%' rather then just %.
  489.  
  490.   * FIXED/MODIFIED: subterm_positions option of read to return the
  491.     positions of possible surrounding braces for a term.  Thus,
  492.     reading (hello) now yields 0-6 rather then 1-5.  This notably
  493.     fixes the 'f' (finish) option in the GUI tracer to properly
  494.     indicate the succeeded clause.
  495.  
  496.   * PORT: Configure detected tcgetattr()/tcsetattr() usage rather then
  497.     ioctl(), fixing terminal interaction on OSF/1.
  498.  
  499.   * PORT: Fix in Makefile to make it work with some broken shells.
  500.  
  501.   * PORT: renamed I_POP virtual machine instruction to I_POPF, to avoid
  502.     a conflict with system headers on some machines.
  503.  
  504.   * PORT: Added support for the 64-bit DEC Alpha processor (or, more
  505.     in general made the code 64-bit clean).  Tested on a DEC Alpha
  506.     using OSF/1 4.0 and the native C-compiler.  Should also work on
  507.     GCC, but the local GCC installation appeared broken.  With thanks
  508.     to Bryan Sorrows for providing me with access to their machine.
  509.     Exactly while I was working on the port, Martin Ostermann mailed
  510.     me patches for running on the Alpha under Linux.  Thanks for the
  511.     couple of problems I missed!
  512.  
  513.     Remaining problems: can sparse memory management work on OSF/1?
  514.     Currently, saved states are portable, but the limits on the Alpha
  515.     are much larger.  This should be fixed.  Prolog machine words are
  516.     64 bits on the Alpha, doubling the stack-sizes and virtually
  517.     removing all limits.  In theory, it would also be possible to use
  518.     ints (32-bit) for this.  I have not checked this.  It is not unlikely
  519.     there are variables defined `int', where they should have been
  520.     `long', truncating large numbers.
  521.  
  522.   * FIXED: globalAlloc() for allocations larger than a page on machines
  523.     with sparse memory management, not handling stack-overflows as
  524.     exceptions (Win32).  Fixes handling of long string objects on these
  525.     platforms.
  526.  
  527.   * FIXED: (GUI Tracer) Stopped `cut-port' from activating when in
  528.     `leap' mode.
  529.  
  530.  
  531. VERSION 2.7.20
  532. ==============
  533.  
  534.   * ADDED: Documentation for expand_query/4 and expand_answer/2.
  535.  
  536.   * ADDED: call_with_depth_limit/3, to aid theorem provers.
  537.  
  538.   * ADDED: features 'unix' and 'windows' for these operating systems. 
  539.  
  540. Version 2.7.19
  541. ==============
  542.  
  543.   * FIXED: functor(X, name, -1), reported by Robert van Engelen.  Thanks.
  544.     
  545.   * FIXED: :- format_predicate/2 handling of arguments.
  546.  
  547.   * ADDED: external "C" declaractions for SWI-Stream.h, so you can use this
  548.     in C++ programs now.
  549.  
  550.   * FIXED: the function sign/1 for floating point numbers.
  551.  
  552. Version 2.7.18
  553. ==============
  554.  
  555.   * ADDED: Directory html for a SWI-Prolog based latex2html translator.
  556.     Very extensive example of using foreign code.
  557.  
  558.   * REMOVED: Lots of unused files from the source-distribution
  559.  
  560.   * WIN32: Removed the uxnt.dll library.  This library is now a static
  561.     library linked into libpl.lib, the SWI-Prolog kernel.
  562.  
  563.   * FIXED: Handling of -p alias=path:...: order of the arguments doesn't
  564.     matter anymore and parsing of the path has been fixed.
  565.  
  566.   * MODIFIED: load_files/2, `silent' option inherits to loads triggerred
  567.     from this one.
  568.  
  569.   * FIXED: Garbage collector error, causing a crash if the local
  570.     and global stack together exceed 64 MB.  Now, they can each
  571.     be 64 MB and be allocated at arbitrary positions.
  572.  
  573.   * CHANGED: Default editor command is now <editor> "<file>", using
  574.     double instead of single quotes.  This fixes problems on Windows
  575.     platforms.
  576.  
  577.   * ADDED: clause_property(+Ref, ?erased), to support the debugger
  578.     reporting about running modified clauses.
  579.  
  580.   * FIXED: current_functor(+Name, +Arity).  Reported by Stefan Wimmel.
  581.     Thanks.
  582.  
  583. Version 2.7.17
  584. ==============
  585.  
  586.   * MODIFIED: the `debug' argument to PL_open_query() now really stops
  587.     the debugger operating inside the called goal, also if an error
  588.     arrises.
  589.  
  590.   * PORT: Sgi/Irix headers configuration and detection of alignment
  591.     restrictions on doubles.
  592.  
  593.   * FIXED: Better operator priority checking, making a :- b :- c illegal
  594.     syntax, as it should be.  Also improved the warning issued.
  595.  
  596.   * FIXED:  Removes MAX_TERM_NESTING from read.pl, previously limiting
  597.     the complexity of terms that could be read.  The new version of
  598.     read requires significantly less (C-) stack and can handle
  599.     much more deeply nested terms.
  600.  
  601.   * FIXED: term_to_atom(+Term, -Atom) on machines with dynamic stacks,
  602.     but no exception based expansion (PC version).
  603.  
  604.   * FIXED: Sopenmen() stream functions (was not used before).  This
  605.     is now used by tellString() and toldString(), who now have a
  606.     different interface.  These functions are used by term_to_atom/2,
  607.     and format/[1-3].
  608.  
  609.  
  610. Version 2.7.16
  611. ==============
  612.  
  613.   * FIXED: Various minor issues in the Makefiles and configure for
  614.     generating a runtime version.  Error message if the runtime
  615.     system cannot find its state.
  616.  
  617.   * FIXED: Heuristics for making hash-index.
  618.  
  619. Version 2.7.15
  620. ==============
  621.  
  622.   * FIXED: Embedding: the kernel now not longer gives up if it cannot
  623.     find the Prolog home directory.  feature(home, Home) will fail if
  624.     the home could not be located.
  625.  
  626.   * FIXED: Configure problems related to -l[n]curses, etc.
  627.  
  628.   * FIXED: retractall(Module:Head(+Arg, ...)) (i.e. explicit module and
  629.     instantiated first argument).
  630.  
  631.   * ADDED: atom_prefix(+Atom, +Prefix): test of Prefix is a prefix
  632.     of Atom.
  633.  
  634.   * FIXED: Bug in Unify between non-tagged and tagged integer.
  635.  
  636.   * FIXED: Bugs in configure, both improper test of double alignment
  637.     and improper testing for the cursus libraries.  Thanks to
  638.     Masafumi Nakane.
  639.  
  640.   * IMPROVED: Moved source_file/2 to foreign language to exploit the
  641.     kernel-maintained database for enumerating the predicates loaded
  642.     from a sourcefile.
  643.  
  644.   * MODIFIED: prolog_trace_interception/3 now has 4 arguments.
  645.  
  646.   * ADDED: Support for tracing the cut in the source-level debugger.
  647.  
  648.   * ADDED: Support for `break-points' to the debugger.
  649.  
  650.   * FIXED: Protocol to include the prompt in the protocol.
  651.  
  652.   * ADDED: clause_property(ClauseRef, fact).  Used by source-level tracer.
  653.  
  654.   * ADDED: Various options to prolog_frame_attribute/3 for the source-level
  655.     tracer.
  656.  
  657.   * FIXED: allow for tracing the unify-port of a fact.
  658.  
  659.   * ADDED: prolog_frame_attribute(Frame, argument(N), Arg) to read
  660.     bindings from a stack-frame.
  661.  
  662.   * ADDED: Various options to plld, the standalone executable linker.
  663.  
  664.   * IMPROVED: (if->then;else) to generate tail-recursion code for the
  665.     `then' part.
  666.  
  667.   * ADDED: $clause_position/3 and prolog_frame_attribute(Frame, pc, PC).
  668.     First steps for a source-code debugger.
  669.  
  670.   * IMPROVED: Clause-representation to delete subclauses member, which
  671.     proved obsolete using the current system.  Added UNIT_CLAUSE flag
  672.     to the clause's flags to achieve the same support for the decompiler.
  673.  
  674.   * FIXED: handling of the stream user_error by other predicates than
  675.     format/[1-3].  Also, using output from write/2, etc. to unbuffered
  676.     streams like user_error is now buffered in 256 byte-blocks, but
  677.     guaranteed to be flushed after the write operation completes,
  678.     resulting in fewer calls to write() and therefore generally better
  679.     performance.
  680.  
  681. Version 2.7.14
  682. ==============
  683.  
  684.   * FIXED: Win32 shell/1 implementation has changed radically, not
  685.     using threads anymore.  This hopefully fixes shell/1 on all
  686.     platforms.  The old version started a thread to wait for the
  687.     process, while the main thread continued processing windows
  688.     messages.  The new version loops through PeekMessage, GetExitCodeProcess
  689.     and Sleep, processing messages and waiting in the same (main)
  690.     thread.
  691.  
  692.   * FIXED: reentrance problem in Sgetc() (low level fetch for character),
  693.     upsetting the tracer sometimes when using XPCE.
  694.  
  695. <this version was put on the ftp server Sep  6>
  696.  
  697.   * FIXED: current_stream/3 failed to properly enumerate the streams.
  698.     Thanks to Robert van Engelen.
  699.  
  700.   * MODIFIED: ensure_loaded and use_module now load if the file has
  701.     been changed since it was last loaded, and not only if it was not
  702.     loaded before.
  703.  
  704.   * ADDED: load_files/2 to load files with various options (including
  705.     silent loading).  The undocumented $consult_file/2 has gone!
  706.  
  707.   * INSTALL: Win32: nice looking installation procedure, based on the
  708.     WISE installation expert package.
  709.  
  710.   * ADDED: A *-> B ; C (softcut).
  711.  
  712.   * FIXED: Random generation for machines that use rand().  Still
  713.     poor, but then this function is bad.  Maybe use our own someday.
  714.  
  715.   * ADDED: Win32: console support for variable-pitch fonts and user
  716.     selection of fonts.
  717.  
  718.   * FIXED: <String> =.. X, found by Robert van Engelen.
  719.     
  720. Version 2.7.13
  721. ==============
  722.  
  723.   * FIXED: prolog_frame_attribute/3 to include the arguments in the
  724.     goal.  Found by Andreas Schlemminger.
  725.  
  726.   * FIXED: listing (clause/2) for predicates holding if->then;else or
  727.     a;b in their body.  Found by Andreas Schlemminger.
  728.  
  729.   * FIXED: shell/1 for Windows platforms (waited almost indefinitely
  730.     before executing the program).
  731.  
  732.   * ADDED: plregtry.dll and registry.dll, providing access to the
  733.     Win32 registry database.  
  734.  
  735.   * ADDED: setting up a DDE server for better interaction with the
  736.     Windows 95 shell (direct edit and consult from the explorer).
  737.  
  738. Version 2.7.13 (ALPHA)
  739. ======================
  740.  
  741.   * ADDED: mode update for open/[3,4] to write at any location in an
  742.     existing file. 
  743.  
  744. Version 2.7.12
  745. ==============
  746.  
  747.   * FIXED: behaviour of the tracer.  Notably included missing fail-ports
  748.     from the trace.  Also fixed the box-counts for the profiler.
  749.  
  750.   * ADDED: expand_term/2 now first tries term_expansion/2 in the module
  751.     that is being loaded.  After that it tries the module user.
  752.  
  753.   * FIXED: Various improvements to the explain facility, notably much
  754.     better location of predicate cross-references.
  755.  
  756. Version 2.7.11
  757. ==============
  758.  
  759.   * MODIFIED: feature(version, Version) and PLVERSION are now numeric.
  760.  
  761.   * FIXED: reporting out-of-stack now never calls the Prolog exception
  762.     handler to avoid a real crash.
  763.  
  764.   * ADDED: Syntax for maintaining source-location inside term-expansion.
  765.     If a term of the form $source_location(File, Line):Clause is found,
  766.     not the current, but the given location will be recorded with the
  767.     clause)
  768.  
  769. Version 2.7.10
  770. ==============
  771.  
  772.   * PORT: More changes to PL_unify_term() by Franklin Chen.  Now really
  773.     compiles on MkLinux.
  774.  
  775.   * FIXED: retract/1 once more.  Now tested on all combinations of
  776.     (non-)unit-clause and with(out) module specifier.
  777.  
  778. Version 2.7.9
  779. =============
  780.  
  781.   * FIXED: interaction between tracer and garbage-collector, sometimes
  782.     causing an assertion-failure in the garbage collector when tracing.
  783.     Reported by Lourens van der Meij.
  784.  
  785.   * CHANGED: flag/3 now handles full 32-bit integers and double
  786.     float values.  Old version was limited to tagged ints and didn't
  787.     do floats.
  788.  
  789.   * PORT: Rewrote PL_unify_term() to avoid using va_list *.  May or
  790.     may not help.  Problem arises on the PowerMac version of Linux
  791.     when compiling pl-fli.c.  Reported by Franklin Chen.
  792.  
  793.   * PORT: Portability patches for AIX 3.2/4.1: avoid name-clash with
  794.     hz and fid_t.  Contributed by Kay Roemer.
  795.  
  796.   * FIXED: documentation of PL_unify_list() interface function.
  797.  
  798.   * FIXED: name/2 to behave correctly in the tracer.  This problem
  799.     may appear with more foreign predicates and maybe requires a
  800.     more fundamental solution.  Reported by Chan Kam Fai.
  801.     
  802.   * FIXED: retract/1 on non-unit-clauses.  Thanks to Liviu Badea.
  803.  
  804. Version 2.7.8
  805. =============
  806.  
  807.   * Some fixes to the Makefile.  No functional change.
  808.  
  809. Version 2.7.7
  810. =============
  811.  
  812.   * DOC: Added documentation for PL_unify_term(), making its specs
  813.     `official'.
  814.  
  815.   * ADDED: PL_query(PL_QUERY_VERSION) to find the version of Prolog
  816.     running.  Used by plwin.exe to display the correct version in the
  817.     window titlebar.
  818.  
  819.   * WIN32 Process creation: added win_exec/2 and changed shell/1 such
  820.     that shell('<Command> &') behaves as win_exec(<Command>, normal).
  821.  
  822.   * WIN32 DDE: Added dde_poke/[3,4] to support DDE poke operation required to
  823.     communicate with the sybase database for Windows.  MODIFIED
  824.     dde_request/3 to return a string object rather then an atom to
  825.     avoid filling the atom-space.
  826.  
  827.   * WIN32: For filenames, ~ is expanded to %home%.  When not present,
  828.     %homedrive%%homepath% is used, which expands to NT's notion of the
  829.     home directory.  Finally, '/' is used as fallback.
  830.  
  831.   * MODIFIED: Changed directory structure of make rt-install to be
  832.     the same as normal installation.
  833.  
  834.   * FIXED: Installation on Pentium Pro: bad detection of canonical
  835.     system type by autoconf's config.sub.  Updated configure.in to
  836.     use autoconf 2.10.
  837.  
  838.   * FIXED: Backtracking on floats and large integers appearing in the head.
  839.     The VM instructions H_FLOAT and H_INTEGERS handling these didn't
  840.     trail the argument.  Bug introduced in 2.7.0.  Thanks to Peter
  841.     Terptra for reporting.
  842.  
  843. Version 2.7.6
  844. =============
  845.  
  846.   * MODIFIED: Added some more support for very deeply nested terms on
  847.     the last arguments (long lists beeing one of them) by introducing
  848.     a new compilation schema for such terms.  Also modified numbervars/4
  849.     to exploit right-recursion of terms.
  850.  
  851.   * MODIFIED: Argument-stack default-limit changed from 8 KB to 1 MB
  852.     for machines with dynamic stacks.  16 KB for others.  This limits
  853.     most of all the depth of terms handled by assert/retract.
  854.  
  855.   * FIXED: Emacs-interaction bug using history.  Thanks to Dave Moffat.
  856.  
  857.   * FIXED: decompilation (retract, listing, etc.) for predicates with
  858.     0 arguments.  Reported by Dave Moffat.
  859.  
  860.   * FIXED: configuration for system where readline requires -lcurses
  861.     rather then -ltermcap (and the latter is not present).
  862.  
  863. Version 2.7.5
  864. =============
  865.  
  866.   * FIXED: typo in float <-> long conversion problem.
  867.  
  868.   * FIXED: plld now passes -D* to the compiler rather then the linker.
  869.  
  870. Version 2.7.4
  871. =============
  872.  
  873.   * FIXED: handling of floating-point conversion to integers on machines
  874.     raising SIGPFE on l = (long)f when f is out of the long range.  Thanks
  875.     to Sven.Hader@Informatik.TU-Chemnitz.DE (Sven Hader).  The problem
  876.     appears at least on Linux running on a Pentium.
  877.  
  878.   * MODIFIED: Added -F file flag to select from multiple initialisation
  879.     scripts, just like -f file.  Old versions only loaded plrc.   The
  880.     new version by default loads <program>.rc.  -F none stops loading
  881.     this file.
  882.  
  883.   * FIXED: plld: gave error code 1 (always).  Added various flags: -v
  884.     -help, -pl.  Updated manuals
  885.  
  886.   * FIXED: PL_next_solution() detection of non-deterministic success
  887.     (reported deterministic for actually non-deterministic goals).
  888.  
  889.   * ADDED: For XPCE users: nice graphical frontend for the online help
  890.     functions.  Working on much better Prolog mode for PceEmacs.
  891.  
  892.   * PORTABILITY: Removed void * arithmetic in pl-setup.c, removed
  893.     a couple of other non-strict-ansi things there.  Added configure
  894.     for alloca().  Reported to compile using IRIX 5.3 native compiler
  895.     now.
  896.  
  897.   * FIXED: Sclose() flushed write-buffer for read-only streams.
  898.  
  899.   * ADDED: read_term/[2,3]: reading with various options
  900.  
  901.   * FIXED: copy_term/2: handling of combination of ground compound
  902.     terms and shared variables.
  903.  
  904.   * FIXED: PL_next_solution() detection of determistic success.
  905.  
  906.   * ADDED: concat_atom/3 for concatenating multiple atoms with a separator.
  907.  
  908.   * FIXED: Online manual generation for dynamic/1 and friends.  Parser
  909.     now deletes \verb from summaries.
  910.  
  911.   * FIXED: $xr_member (underlying explain/[1,2]) for clauses containing
  912.     string objects (crashed).  Improved various details to explain/[1,2]
  913.  
  914.   * MODIFIED: Quoted writing of an invalid float yields '$Infinity' or '$NaN',
  915.     unquoted Infinity or NaN.
  916.  
  917. Version 2.7.3
  918. =============
  919.  
  920.   * FIXED: ?- expand_term(A,B), reported by Fergus Henderson.
  921.  
  922.   * FIXED: cleanup after calling Prolog-defined arithmetic functions
  923.     (caused a crash when two arithmetic functions are called in the
  924.     same context).
  925.  
  926.   * Renamed PL_reinit_hook() to PL_initialise_hook(), which reflects
  927.     more the current function.  Use this to register the readline
  928.     interface, so it is available while loading .plrc.  Se also
  929.     pl-extend.c and its public copy stub.c.
  930.  
  931. Version 2.7.2
  932. =============
  933.  
  934.   * ADDED: features `debug_on_error' and `report_error'
  935.  
  936.   * ISO: If a predicate has no clauses and is defined either dynamic,
  937.     multifile or discontiguous, it is considered defined.  This used to
  938.     hold only for dynamic predicates. 
  939.  
  940. Version 2.7.1
  941. =============
  942.  
  943.   * FIXED: Signal/readline/abort interfaces for the Win32 versions, so
  944.     signals are handled correctly again and readline-based input handling
  945.     works.
  946.  
  947.   * FIXED: bug in setup of memory-base pointers, causing all versions
  948.     to fail who allocate memory higher than 128MB, which includes the
  949.     win32 version under win32s (Windows 3.1)
  950.  
  951.   * FIXED: ar/ranlib configuration (notably for BSD systems, such as
  952.     SunOs 4.1).
  953.  
  954.   * FIXED: do not load readline interface if the input is not a terminal.
  955.     This bug prevented constructs in shell-scripts such as pl << _EOS_ ...
  956.  
  957. Version 2.7.0
  958. =============
  959.  
  960.   * FIXED: HPUX compilation thanks to Gordon Streeter.
  961.  
  962.   * WIN32: The kernel is now in libpl.dll, which comes with two toplevel
  963.     drivers: plcon.exe for a standard IO version and plwin.exe for the
  964.     windows based version.  New directory embed with the sources of
  965.     both toplevels.
  966.  
  967.   * FIXED: memory leak after assert/retract of code holding floats,
  968.     32-bit integers or strings (not lists of char-codes).  Also
  969.     provides more compact code for floats and large integers
  970.     (both small and large integers require 2 words, doubles 3 words).
  971.  
  972.   * IMPROVED: More compact representation of compiled floats, long
  973.     integers and strings.
  974.  
  975.   * MODIFIED: Complete rewrite of the internal datastructures.  The
  976.     aim is to avoid mixing pointers and unsigned longs on the stacks
  977.     and thus remove the various assumptions on the memory model underlying
  978.     the prior versions. See pl-data.h for details.
  979.  
  980.   * IMPROVED: Lifted the maximum number of variables in a clause from
  981.     256 to 65536, maximum arity of predicates from 128 to 1024.  Both
  982.     numbers are fairly arbitrary and can be raised further at the cost
  983.     of wasting a little more memory.
  984.  
  985. Version 2.6.0
  986. =============
  987.  
  988.   * ADDED: plld and manpage for creating embedded executables.
  989.  
  990.   * FIXED: flush output of terminal streams while halting.
  991.  
  992.   * ADDED: option stand_alone for qsave_program to create stand-alone
  993.     executables!
  994.  
  995.   * INSTALL: The executables are now installed in $(PLBASE)/bin/$(ARCH),
  996.     i.e. using a different directory for each platform, so multiple
  997.     platforms are supported more easily.
  998.  
  999.   * MODIFIED: Drastic reorganisation of arithmetic handling:
  1000.  
  1001.     - All arithmetic is now handled using 32-bit longs and 64-bit
  1002.           doubles.
  1003.  
  1004.     - Smaller integers (within the range described by the features
  1005.       min_tagged_integer ... max_tagged_integer) are represented
  1006.       internally as tagged integers.  Larger integers and doubles
  1007.       are represented as `indirect data'.
  1008.  
  1009.     - A generic representation for `indirect', covering uniform
  1010.       handling of them by the virtual machine, unify and garbage
  1011.       collector.  This deals with strings, doubles and `bignums'.
  1012.  
  1013.     - New interface between the arithmetic functions and the
  1014.       arithmetic predicates (is/2, >/2, etc.) as well as their
  1015.       virtual machine instructions.  This new interface is faster.
  1016.       and avoids unnecessary type-conversions.
  1017.  
  1018.     - Augmented/renumbered the virtual machine instructions, making
  1019.       old saved states worthless.
  1020.  
  1021.     - Fixed a couple of functions translating between floats and
  1022.       integers: integer/1, ceil/1, floor/1, float_integer_part/1,
  1023.       truncate/1, etc. for handling large numbers correctly.
  1024.  
  1025.     - Added the feature float_format to define how floats are
  1026.       printed by write/1, print/1, etc.
  1027.  
  1028.   * MODIFIED: Disconnected readline and Win32 I/O window interface to
  1029.     a separate module.  This is a necessary precondition to arrive at
  1030.     a modular and embedible Prolog engine for Win32.  See pl-rl.c
  1031.  
  1032.   * FIXED: unknown/2 (reporting instantiation fault).
  1033.  
  1034. Version 2.5.6
  1035. =============
  1036.   
  1037.   * FIXED: ceil/1, floor/1 and integer/1 to handle large floating point
  1038.     numbers correctly.
  1039.  
  1040.   * MODIFIED: write and friends to print floating point numbers using
  1041.     the `%g' format by default, printing large floats as -for example-
  1042.     3e20.  Use format with the ~f option to format floats as you please.
  1043.  
  1044.   * FIXED: on some machines <assert.h> requires <stdio.h> to be included.
  1045.     configure now checks for this.
  1046.  
  1047.   * FIXED: .qlf file-magic verification.
  1048.  
  1049.   * FIXED: Some minor portability problems: test for CC supporting -c -o
  1050.     combination, solaris prototypes for random and srandom added, changed
  1051.     system parameter detection for file-table-size and page-size to use
  1052.     sysconf() when available.  Compilation is now silent on solaris 2.5,
  1053.     except for a number of `might not be initialised' warnings in pl-wam.c
  1054.     that aren't correct (also, these are not reported by other versions
  1055.     of gcc).
  1056.  
  1057. Version 2.5.5
  1058. =============
  1059.  
  1060.   * FIXED: Important bug in =@=, also used by bagof/setof, leading to
  1061.     crashes on some structures and failure on structural equal terms
  1062.     on others.
  1063.  
  1064.   * FIXED: Crash in the tracer under some circumstances, reported
  1065.     by Michael Schulz.  
  1066.  
  1067.   * FIXED: loading Quick Load Files that do not contain modules.
  1068.  
  1069. Version 2.5.4
  1070. =============
  1071.  
  1072.   * FIXED: read/1 for reading negative floating point numbers (2.5.x bug),
  1073.     thanks to Bill Jones.
  1074.  
  1075.   * FIXED: read/1, etc. for reading a single variable.  Found by Luu Tran.
  1076.  
  1077.   * FIXED: DCG expansion error found by Keith Whitwell.
  1078.  
  1079.  
  1080. Version 2.5.3
  1081. =============
  1082.  
  1083.   * ADDED: ISO at_end_of_stream/[0,1] and peek_byte/[1,2].
  1084.  
  1085.   * Fixed and faster nth0/3 and nth1/3 implementations by Martin Jansche.
  1086.  
  1087.   * New pl(1) manual page by Martin Jansche.  Thanks.
  1088.  
  1089.   * PORT: Ron Ferguson mailed me a couple of fixes for the NeXT machine,
  1090.     using release 2 of the C-compiler from the standard development system.
  1091.     Thanks.
  1092.  
  1093.   * FIXED: decompilation (listing, retract, etc.) for clauses using the
  1094.     new (2.5.x) A_REAL instruction.
  1095.  
  1096.   * FIXED: \=/2 and recorded/3 for handling shared variables.  Found
  1097.     by Joerg Garbers.
  1098.  
  1099.   * ADDED: edit definition for emacsclient(1).
  1100.  
  1101.   * Fixed unify (=/2) for unification of two floats.  Reported by Dave
  1102.     Moffat.
  1103.  
  1104. Version 2.5.2
  1105. =============
  1106.  
  1107.   * FIXED: PL_retry() and friends were lacking from the new SWI-Prolog.h
  1108.  
  1109.   * FIXED: PL_cons_functor() and PL_cons_list(), also fixing variable
  1110.     handling in bagof/setof.  Thanks to Khanh Doan for reporting.
  1111.  
  1112.   * ADDED: string_concat/3 with same semantics as concat/3, but unbound
  1113.     will be unified with a string object.
  1114.  
  1115.   * ADDED: rl_read_init_file(+File) and rl_add_history(+Line) for better
  1116.     readline interaction.  Added readline.3 to the standard installed
  1117.     manual set.
  1118.  
  1119.   * ADDED: file_name_extension/3 to reason about filename extensions in
  1120.     a machine-independent manner.  Fixes Win32 associations if the filename
  1121.     has uppercase extension.
  1122.  
  1123. Version 2.5.1 (released for Win32 only)
  1124. =======================================
  1125.  
  1126.   * FIXED: Stack expansion for some foreign predicates using the local
  1127.     stack as temporary area for machines with exception-based stack-overflow
  1128.     handling that do not provide the address of the segmentation fault to
  1129.     the handler (Win32, Linux).
  1130.  
  1131.   * FIXED: Linux: repeated handling of the sequence Control-C, abort.
  1132.  
  1133.   * FIXED: Crash after the system has ran out of some stacks on machines
  1134.     with exception-based stack-overflow handling and POSIX signals.
  1135.     Solaris, Linux and Win32 are the examples I know of.
  1136.  
  1137.   * FIXED: CVT_NUMBER and CVT_ATOMIC constants in SWI-Prolog.h,
  1138.     breaking name(+Float, -Chars).
  1139.  
  1140.   * FIXED: plus/3 for +, -, + instantiation (2.5.0 introduced typo).
  1141.  
  1142.   * FIXED: prototype declaraction reported by Martin Jansche.
  1143.  
  1144. Version 2.5.0
  1145. =============
  1146.  
  1147.   * Added features `trace_gc' and `gc'.
  1148.  
  1149.   * Added `pl -arch' to get the architecture identifier easily for
  1150.     installation and makefiles
  1151.  
  1152.   * New implementation of copy_term/2 that shares common compound
  1153.     sub-terms.
  1154.  
  1155.   * Totally new foreign language interface using `term-references' to
  1156.     allow for garbage collection and stack-shifts with active foreign
  1157.     code.  Ported all foreign predicates to the new interface.  This
  1158.     interface also allows for generating multiple alternatives for
  1159.     a Prolog goal from C.
  1160.  
  1161.     For compatibility with old foreign code, see README.oldforeign.
  1162.  
  1163.   * FIXED: optimised compilation of A is X (i.e. second argument is
  1164.     a variable).
  1165.  
  1166.   * COMPILER: improved compilation of floating-point arithmetic using
  1167.     -O (optimised), avoiding unnecessary copying of floating point
  1168.     numbers to the global stack.
  1169.  
  1170. ****************************************************************
  1171.          INCOMPATIBLE FOREIGN LANGUAGE INTERFACE
  1172. ****************************************************************
  1173.  
  1174. Version 2.1.15
  1175. ==============
  1176.  
  1177.   * FIXED: read/1 to push the load context when reading end-of-file, so
  1178.     the following works:
  1179.  
  1180.     term_expansion(end_of_file, end_of_file) :-
  1181.             prolog_load_context(file, Path),
  1182.         format('Finished loading ~w~n', [Path]).
  1183.  
  1184.   * FIXED: abolish/2 on imported procedures.  Reported by Peter Barth.
  1185.  
  1186. Version 2.1.14
  1187. ==============
  1188.  
  1189.   * DISTRIBUTION: Removed various out-of-date files from the distribution:
  1190.     Makefile.win, Makefile.dos, etc.
  1191.  
  1192.   * WIN32S: Fixed problem in the garbage collector.
  1193.  
  1194.   * WIN32: Improved cputime for NT ('95 and win32s use the old code).
  1195.  
  1196.   * MANUAL: Martin Jansche <martin@pc03.idf.uni-heidelberg.de> has send me
  1197.     patches for the manual, fixing many smaller and bigger mistakes in it.
  1198.     Thanks!
  1199.  
  1200.   * DEBUG: Added stuff for debugging for different memory models on Unix
  1201.     machines with an mmap() that can map memory at the addresses normally
  1202.     used by the target machine.  See morecore.c
  1203.  
  1204. Version 2.1.13
  1205. ==============
  1206.  
  1207.   * WIN32: Fixed error reporting of shell/1.
  1208.  
  1209.   * FIXED: added a flush() after completing the user-query.  This gives
  1210.     better output for ?- write(hello).
  1211.  
  1212.   * FIXED: file-name conversion cache management.  This cache is used
  1213.     by absolute_file_name/3.
  1214.  
  1215. Version 2.1.12
  1216. ==============
  1217.  
  1218.   * Most of these fixed after comments from David Plummer.  Thanks.
  1219.  
  1220.   * FIXED: displayq for ','(...)
  1221.  
  1222.   * FIXED: read/1 and friends to handle {}(..) and [](...) correctly.
  1223.  
  1224.   * FIXED: format/[2,3] to be able to write unlimited-length output,
  1225.     provided there are no `pending' ~t's.
  1226.  
  1227.   * COMPAT: absolute_file/3 to accept list of access-modes
  1228.  
  1229.   * MODIFIED: access_file/2 to succeed on write and append mode if the
  1230.     file does not exist, but the directory can be written.
  1231.  
  1232.   * FIXED: unification order in translating grammar --> {goal}.  Noted
  1233.     by Andreas Steiner.
  1234.  
  1235.   * FIXED: Temporary-buffer management in Svfprintf() and friends.
  1236.  
  1237. Version 2.1.11
  1238. ==============
  1239.  
  1240.   * FIXED: functor(X, 8, 0) to yield X = 8.
  1241.  
  1242.   * DELETED: library_directory(.).  Gives too much problems because the
  1243.     system picks wrong files or directories.
  1244.  
  1245. Version 2.1.10
  1246. ==============
  1247.  
  1248.   * ISO: added compliant open/4 predicate.
  1249.  
  1250.   * Moved all printing of the system (banner, prompt and warnings to
  1251.     use user_error (=stderr) rather than user_output (=stdout), so
  1252.     it becomes easier to use Prolog's standard output.  Stderr is
  1253.     unbuffered, several predicates that will output more than one
  1254.     character now use a `temporary buffer' to reduce IO-load.
  1255.  
  1256.   * ISO: Added arithmetic functions: rem/2, ** (= ^), ceiling (= ceil),
  1257.     float/1, float_fractional_part/1, float_integer_part/1, truncate/1,
  1258.     sign/1 and round/1 (= integer/1).
  1259.  
  1260.   * ISO Syntax: Changed quoted atom and string syntax to support character
  1261.     escapes, broken lines, etc.  These changes can be switched off
  1262.     using ?- set_feature(character_escapes, false). for backward
  1263.     compatibility.
  1264.  
  1265.     Also, 0b110, 0xa2 and 0o70 (binary, hexadecimal and octal) number
  1266.     representations are now recognised.
  1267.  
  1268.   * ISO: Added features bounded, integer_rounding_function, max_arity.
  1269.  
  1270.   * WIN32: Various changes to the console: use standard colours and
  1271.     font, allow for changing colours.  Bind Control-Z to end-of-file
  1272.     (alternative for Control-D, which is still valid).
  1273.  
  1274.   * WIN32: `pl state.qlx' now assumes state.qlx is the result of a
  1275.     qsave_program/[1,2] and automatically loads the state.  This
  1276.     allows for associating states with the emulator.  Also, pl file.pl
  1277.     will automatically chdir/1 to the directory containing the file
  1278.     and load the file before entering the toplevel.
  1279.  
  1280.   * WIN32: Fixed some filename case problems: expand_file_name/2 now
  1281.     works case-insensitive.  Comparing files for sorting is done case
  1282.     insenstive.
  1283.  
  1284.   * WIN32: Command-line breaking now handles "quoted arguments".  Only
  1285.     double quotes and no escape (I don't know the Windows'95 escape
  1286.     conventions).
  1287.  
  1288.   * WIN32: Fixed filename completion from console window.
  1289.  
  1290.   * INSTALL: Fixed detection of non-gnu/gnu make
  1291.  
  1292.   * FIXED: use_module/1, etc. to import predicates exported using the
  1293.     export/1 directive instead of the module/2 directive.
  1294.  
  1295. Version 2.1.9
  1296. =============
  1297.  
  1298.   * FIXED: Updated stack-shifter code for the changed layout of the
  1299.     environment-stack frames.  This bug prevented pl-gc.c to compile
  1300.     on machines having no virtual-memory based stack allocation.
  1301.  
  1302. Version 2.1.8
  1303. =============
  1304.  
  1305.   * ADDED: check in exit code that removes possibly incomplete .qlf and
  1306.     bootfiles if an error occurred while building the file.
  1307.  
  1308.   * FIXED: WIN32 tmp_file/2.  This fixes help/1.
  1309.  
  1310.   * FIXED: configure for users of a shell that doesn't export $PWD and
  1311.     the system chooses the install-sh script.
  1312.  
  1313. Version 2.1.7
  1314. =============
  1315.  
  1316.   * FIXED: management of clause index-table.  Old code lead to indefinite
  1317.     growing of these tables with repetative assert/retract
  1318.  
  1319.   * ADDED: Improved dirty-management on clause indexing system to improve
  1320.     the performance on retract from hashed dynamic predicates.
  1321.  
  1322.   * ADDED: absolute_file_name/3: options file_type, file_errors and
  1323.     solutions for compatibility.
  1324.  
  1325.   * Win32: compiled (with small updates) for Win32
  1326.  
  1327.   * ADDED: Implemented open_null_stream/1 by defining a null-stream in
  1328.     SWI-Prologs stream-i/o package to avoid the /dev/null dependency.
  1329.  
  1330.   * ADDED: Saving current operator declarations with qsave_program/[1,2].
  1331.  
  1332.   * FIXED: Garbage-collector error.
  1333.  
  1334.   * FIXED: predicate-reference count problem
  1335.   
  1336.   * ADDED: style_check(+dynamic) to report on manipulation of predicates
  1337.     that are active in the interpreter.
  1338.  
  1339. Version 2.1.6
  1340. =============
  1341.  
  1342.   * INSTALL: installs pl in the SWI-Prolog tree and just creates a link
  1343.     from the binary directory.  Makes it easier to move and redistribute
  1344.     the SWI-Prolog binaries.
  1345.  
  1346.   * CHPL.c: fixed conflict for basename()
  1347.   
  1348.   * FIXED: file-searching cache returning alternate answers in different
  1349.     order.
  1350.  
  1351. Version 2.1.5
  1352. =============
  1353.  
  1354.   * ADDED: notrace(+Goal) to run Goal invisible to the debugger.
  1355.  
  1356.   * ADDED: open_shared_object/3 to be able to pass flags to dlopen().
  1357.  
  1358.   * CLAUSE INDEXING: version 2.1.5 provides hashing to speed up first
  1359.     argument indexing.  Numerous changes had to be made to realise this:
  1360.     Indirection in the clause chain of predicates, implementation of a
  1361.     lazy automatic system to guess the proper way to index a predicate,
  1362.     a new clause-reference count system (avoiding problems with manipulation
  1363.     of `active' predicates.  The representation of predicate and clauses
  1364.     has changed in various ways.
  1365.  
  1366.   * INSTALL: Changed various things to the configure options and detection,
  1367.     to the defaults make more sence.  Upgraded to autoconf 2.4, fixed for
  1368.     cross-compilation.
  1369.  
  1370.   * PORT: Fixed various things for the Linux/ELF port.  Tested on
  1371.     Linux 1.2.13 running libc-5.0.9.  Compiled with gcc-2.7.0.
  1372.  
  1373.   * PERFORMANCE: Implemented automatic rehashing of all (previously)
  1374.     fixed-size hash-tables.  Prevents performance degradation on very
  1375.     large programs.
  1376.  
  1377.   * FIXED: profile/3 problem (leading to crashes).
  1378.  
  1379.   * FIXED: pl -O bug: trailing of is/2 was not handled properly.
  1380.  
  1381. Version 2.1.4
  1382. =============
  1383.  
  1384.   * MODIFIED: Changed definition of absolute_file_name/2.  Moved
  1385.     absolute_file_name/3 from library(quintus) to a built-in predicate.
  1386.  
  1387.   * ADDED: file_directory_name/2 and file_base_name/2.
  1388.  
  1389.   * ADDED: end_of_file is now passed to term_expansion/2.
  1390.  
  1391.   * DOC: Many updates.
  1392.  
  1393.   * FIXED: read/1 for foo.%comment (i.e. no space between the . and the
  1394.     comment).  Note that foo./*comment*/ doesn't work as this will be
  1395.     tokenised as `foo', `./*', `comment', `*/'.
  1396.  
  1397.   * ADDED: lazy recomputation of clause indexing.  This notably speeds
  1398.     up loading .qlf and bootfiles.
  1399.  
  1400.   * ADDED: hash_term/2 for advanced indexing of databases.
  1401.  
  1402.   * ADDED: setting file_search_path through the command line using:
  1403.     pl -p mydir=/foo/bar.
  1404.  
  1405.   * FIXED: Semantics of ensure_loaded/1 if the file is already loaded,
  1406.     combined with the module system.  See ensure_loaded/1.
  1407.  
  1408.   * FIXED: Grammar rule compiler's handling of non-proper lists in the
  1409.     head or body (lists ending in a variable).  Lists of more then one
  1410.     element are now translated into append/3.  The following now compiles
  1411.     ok: string([H|T]) --> [H|T].
  1412.  
  1413.   * MODIFIED: term_to_atom/2 and atom_to_term/3 to fail silently on a
  1414.     syntax error.  Both predicates now also accept a string in the place
  1415.     of the atom to parse strings: term_to_atom(X, "foo(bar)") works as
  1416.     expected.
  1417.  
  1418.   * ADDED: `swi' and `foreign' aliases to file_search_path/2.
  1419.  
  1420.   * MODIFIED: Grammar rule translator now uses 'C'/3 instead of '$char'/3
  1421.     to extract the head.  Compatibility.
  1422.  
  1423.   * MODIFIED: at_initialisation/1 is now called at_initialization/1.
  1424.  
  1425.   * INSTALL: Fixed Makefile and configure to be able to build the system
  1426.     for multiple platforms.
  1427.  
  1428.   * ADDED: Infra-structure for making portable saved-states (equivalents
  1429.     of boot files):
  1430.  
  1431.     + initialization/1    (goals to run at initialization)
  1432.     + volatile/1        (predicates for which not to save clauses)
  1433.     + require/1        (define we require this predicate)
  1434.     + autoload/[0,1]    (autoload needed things now)
  1435.     + qsave_program/[1,2]    (make a quick-loadable state)
  1436.  
  1437.   * ADDED: compound/1 to test for compound terms.
  1438.  
  1439.   * FIXED: compilation of ``foo:Head :- Body'' to be equivalent to
  1440.     foo:(Head :- Body).
  1441.  
  1442.   * FIXED: problem in read/1 and number_chars/2 that may have lead to 
  1443.     garbage collection errors.
  1444.  
  1445.   * FIXED: setarg/3 integrated in the trail-system.  Removes its
  1446.     choicepoint and ensures data consistency.
  1447.  
  1448. Version 2.1.3
  1449. =============
  1450.  
  1451.   * ADDED: setarg/3 for extra-logical assignment to arguments of terms.
  1452.  
  1453.   * MODIFIED: PL_new_integer() now returns a floating point value if the
  1454.     argument exceeds SWI-Prolog's integer range.
  1455.  
  1456.   * ADDED: Automatically dumps the top of the runtime stack on floating
  1457.     point exceptions.
  1458.  
  1459.   * FIXED: Trap floating point exceptions for the win32 version.
  1460.  
  1461. Version 2.1.2
  1462. =============
  1463.  
  1464.   * FIXED: read/1 problem.  Try reading just '0'. ...  Reported by
  1465.     Daniela Genius.
  1466.  
  1467.   * FIXED: `toplevel' variable expansion system, leading to various strange
  1468.     behaviours in handling queries from the user.  It now can also handle
  1469.     cases as:
  1470.  
  1471.         ?- X = 5.
  1472.     ?- X is $X + 1.
  1473.  
  1474. Version 2.1.1
  1475. =============
  1476.  
  1477.   * MODIFIED: DCG translation of free variables now calls phrase/3, which
  1478.     has been changed slightly to deal with `un-parsing'.  Modification
  1479.     is probably not complete, but it fixes some problems encountered by
  1480.     Michael Boehlen.
  1481.  
  1482.   * MODIFIED: keysort/2 is now stable with regard to multiple values on
  1483.     the same key.  Makes this predicate compatible with SICStus and
  1484.     Quintus.
  1485.  
  1486.   * FIXED: :- dynamic, :- multifile, :- module_transparent and
  1487.     :- discontiguous to accept Module:Name/Arity, ...
  1488.  
  1489.   * Moved call/[1..] into the compiler.  call/[1..6] is removed from
  1490.     library(quintus) as it is now part of the base system. Also fail/0
  1491.     and true/0 are now handled by virtual machine instructions.
  1492.  
  1493.   * Upgrade to autoconf 2.3, fixed usage of `tr' for Solaris 2.x and
  1494.     with that the configuration of --enable-shared.
  1495.  
  1496.   * FIXED: number_chars/2 and name/2 now handle floating point numbers.
  1497.  
  1498.   * FIXED: interaction between chdir/1 and absolute_file_name/2.
  1499.  
  1500.   * FIXED: format('~*c', [10,45]) (or more in general, providing an argument
  1501.     to ~c to print the character multiple times).  Thanks to Michael Boehlen.
  1502.  
  1503.   * FIXED: PrologPrompt() to allow reading standard input from the -g and/or
  1504.     -t goal options.
  1505.  
  1506. Version 2.1.0
  1507. ==============
  1508.  
  1509.   * Added facilities to allow for embedding SWI-Prolog in C applications.
  1510.  
  1511.   * Fixed semantics of the cut in toplevel queries by compiling the query
  1512.     instead of using meta-call.
  1513.  
  1514.   * Fixed bagof(A, member([B, C]), L) to yield L = [B,C] instead of making
  1515.     new variables.
  1516.  
  1517.   * Fixed typo in dde.pl (reported by Thiebaut Moeglin)
  1518.  
  1519.   * Integration of NeXT patches from Thomas Hoppe (hoppet@cs.tu-berlin.de).
  1520.     Probably still not 100% ok, but should be closer now.
  1521.  
  1522.   * Fixed XPCE event dispatching for pl -tty
  1523.  
  1524.   * PL_univg() C-interface function added for supporting XPCE > 4.8.10
  1525.     with better interface performance.
  1526.  
  1527.   * Fixed operator precedence problem (reported by Dave Moffat)
  1528.  
  1529. Version 2.0.9
  1530. =============
  1531.  
  1532.   * ADDED: HPUX interface for shared libraries, but a HPUX guru should
  1533.     fix the import/export details (line was too slow to browse to lots
  1534.     of manual pages).
  1535.  
  1536.   * FIXED: pl-incl.h typo (breaks IRIX 5.3 port and propably others)
  1537.  
  1538.   * FIXED: HPUX detection of mmap()'able stacks fixed.
  1539.  
  1540.   * FIXED: generation of include/SWI-Exports, the AIX export declaration
  1541.     file.
  1542.  
  1543. Version 2.0.8
  1544. =============
  1545.  
  1546.   * FIXED: loading shared objects using dlopen() for solaris 2.x
  1547.   
  1548.   * FIXED: shlib.pl current_foreign_library/2 administration.
  1549.  
  1550. Version 2.0.7
  1551. =============
  1552.  
  1553.   * FIXED: compilation (boot and .qlf) now donot look for compiled
  1554.     (.qlf) files.
  1555.  
  1556.   * CHANGED: Default goal writing the banner is now in the flag
  1557.     $banner_goal (used by XPCE as a shared library).
  1558.  
  1559.  
  1560. Version 2.0.6
  1561. =============
  1562.  
  1563.   * CHANGED: retractall/1 implementation is now compatible to Quintus,
  1564.     avoiding the hacky redefinition in library(quintus.pl).  The difference
  1565.     is that now the argument will only be matched against the clause-head.
  1566.     on a match the clause will be removed, regardless of its body.  Makes
  1567.     no difference for retractall on facts, but does make a difference on
  1568.     clauses with a non-just-true body.  retractall/1 is now a deterministic
  1569.     foreign predicate that no longer decompiles the clause body, making
  1570.     it faster too.
  1571.  
  1572.   * FIXED: made .qlf files independent of the directory they where compiled.
  1573.  
  1574.   * FIXED: Path canonisation problem
  1575.  
  1576.   * FIXED: loading .qlf files holding already-defined modules
  1577.  
  1578.   * ADDED: file_search_path file-location system
  1579.  
  1580.   * ADDED: access_file(File, exists) to check for bare existence.
  1581.  
  1582.   * FIXED: Another clear_uninitialised() problem related to if-then-else
  1583.     causing garbage collector and possibly stack-shift errors.  As the
  1584.     implementation is now changed radically, this problem should be gone
  1585.     forever ...
  1586.  
  1587.   * FIXED: copy_term/2.  Now creates more efficient terms (less references)
  1588.     and no longer creates bad references.
  1589.  
  1590. Version 2.0.5
  1591. =============
  1592.  
  1593.   * MODIFIED: Replaced libc based stream IO with more general IOSTREAM
  1594.     package.  Deleted folding capabilities as just about any IO device
  1595.     has these built-in these days.  These changes are to facilate embedding
  1596.     in window-based environments that do not support stdio.  See pl-stream.c
  1597.  
  1598.   * FIX: dwim_match/2 for single character mismatch.
  1599.  
  1600.   * ADDED: atom_chars/2, number_chars/2, atom_char/2, various new
  1601.     unix/1 arguments.
  1602.  
  1603. Version 2.0.4
  1604. =============
  1605.  
  1606.   * MODIFIED: Consult and friends (ensure_loaded, use_module, etc.)
  1607.     no longer change directory to the directory in which the file
  1608.     lives.  As a consequence, directives have to use prolog_load_context/2
  1609.     or source_location/2 to find the context directory of the directive.
  1610.  
  1611.     consult and related directives still load relative to the directory
  1612.     in which the currently loading file lives.
  1613.  
  1614.   * Added prolog_load_context/2 to provide context for directives.
  1615.     Actually moved from library(quintus) to the boot image as the
  1616.     predicate is now necessary.
  1617.  
  1618.   * Added -DO_RUNTIME support to make a version    that is more suitable
  1619.     for distribution of products: no profiling, no tracer, no readline
  1620.     and no interrupt handling.  Setup using configure --enable-runtime
  1621.  
  1622. Version 2.0.3
  1623. =============
  1624.  
  1625.   * Fixed: loading qlf files now push the source context while running
  1626.     a directive, so source_location/2 should work while executing a
  1627.     directive from a .qlf file.
  1628.   * Fixed: recognise MAP_ANONYMOUS for configuring mmap() based stacks.
  1629.   * Added feature(dynamic_stacks, Bool) for detection of virtual memory
  1630.     based stack management.
  1631.   * Fixed feature(open_shared_object, Bool) (Michael Kauschke)
  1632.  
  1633. Version 2.0.2
  1634. =============
  1635.  
  1636.   * Fixed pl [options] -c file ...
  1637.   * Improved VMI implementation for (if -> then ; else), \+ and (a;b).
  1638.     Reduces overhead of these to about 1/3th.
  1639.   * Added VMI support for fast calling of foreign system predicates that
  1640.     are called with only variable arguments (i.e. `test(X) :- integer(X)'
  1641.     is optimised; `test(X) :- integer(3)' is not).  Provides big speedup
  1642.     for fail, true, integer/1 (etc.), and many other commonly called
  1643.     foreign predicates.
  1644.   * Support for mmap() using MAP_ANON.  Avoids a file-descriptor and hopefully
  1645.     improves portability of dynamic stacks.
  1646.   * Fix for Solaris 2.4 mmap() detection.
  1647.   * Fix: added autoconf test for using asm("nop") in pl-wam.c or use slower
  1648.     but more portable C alternative (fixes RS/6000 version)
  1649.  
  1650. Version 2.0.1
  1651. =============
  1652.  
  1653.   * FIX in garbage collector of 2.0.0 was only half the story.  Should
  1654.     be ok now.  Thanks to Thomas Hoppe for supplying me with the error
  1655.     report.
  1656.   * FIX & performance: current_functor/2 with the first argument is
  1657.     instantiated.
  1658.   * Installation: the libraries are now installed as
  1659.     $(prefix)/lib/$(PL)-$(PLVERSION).  A possibly existing executable is moved
  1660.     from $(prefix)/bin/$(PL) to $(prefix)/bin/$(PL).old
  1661.  
  1662.  
  1663. Version 2.0.0
  1664. =============
  1665.  
  1666.   * Added `Quick Load File' compilation support.  See qcompile/1 and
  1667.     qload/1.  Alpha stage.
  1668.   * FIXED infrequent segmentation violation occurring on machines with
  1669.     dynamic stack management, but whose signal handler is not provided
  1670.     the address of the fault (Linux and Solaris 2 for example).  The
  1671.     crash can be in various foreign predicates that use the local stack
  1672.     as scratch area.
  1673.   * Important FIX to the garbage collector.  This bug may happen iff
  1674.     a garbage collection is invoked while clauses are active that have
  1675.     \+ or (a -> b ; c) constructs that are not yet active.  Generally
  1676.     the problem is reported as an inconsistency in the relocation count.
  1677.   * Fix to virtual machine encoding that applies to versions compiled
  1678.     with gcc 2.x and whose text-space starts at a high address.
  1679.   * Modified absolute_file_name/2 to take specifications of the
  1680.     form absolute_file_name(library('shell.pl'), X).
  1681.   * Various fixes to the new .qlf format and support for compiliation 
  1682.     of individual or combined sources into .qlf files.  .qlf files may
  1683.     now be loaded as normal sourcefiles instead of only as `boot' file.
  1684.  
  1685.  
  1686. Version 1.9.6:
  1687. ==============
  1688.  
  1689.   * Fixed for BIG_ENDIAN machines (Intel, VAX, ...)
  1690.   * Windows version: added dde_execute/2
  1691.   * Added Quintus compatible foreign-language (C) interface.
  1692.   * Changed .qlf (former .wic) format drastically.  The current
  1693.     format gives about 30% shorter files and loads twice as fast.
  1694.   * Changed basic clause representation.  VM op-codes are now
  1695.     full machine words, avoiding the need for the `XR' table
  1696.     management and related indirections.  Simplifies the instruction set,
  1697.     speedup for compiler, decompiler (retract, clause) and execution
  1698.     (about 10%).  Enlarges program-size with about 10%.
  1699.  
  1700.  
  1701. Version 1.9.5:
  1702. ==============
  1703.  
  1704. alpha-2
  1705.  
  1706.   * Fixed prolog_frame_attribute/3 for key=parent.
  1707.   * Added at_initialisation(+Goal) for initialisation hooks
  1708.   * Fixed tracer problems introduced in 1.9.5-alpla-1.
  1709.  
  1710.  
  1711. alpha-1
  1712.  
  1713.   * Moved sourcecode administration from predicate to individual
  1714.     clauses.  Purpose: better source-level debugger support, better
  1715.     handling of multifile predicates.
  1716.  
  1717.   * Recompiling files holding clauses for multifile predicates now
  1718.     works properly. The clauses of the latest loaded file will
  1719.     always be the last.
  1720.  
  1721.   * Removing a predicate from a file and recompiling the file
  1722.     now actually removes the definition from the Prolog database,
  1723.     even if you are not using modules.
  1724.  
  1725.   * Added prolog_frame_attribute(Frame, clause, ClauseRef) to get a
  1726.     reference to the currently running clause.
  1727.  
  1728.   * Added clause_property/2 to get the source information from a 
  1729.     specific clause.
  1730.  
  1731.   * Compiled state (-c compilation) has changed a little.  The system
  1732.     does not load old states.
  1733.  
  1734.  
  1735. Version 1.9.4.  Redefining system-predicates is no longer allowed.  This
  1736. may be overruled using  :-   redefine_system_predicate(+Head).   Fix  in
  1737. Makefile (from Kayvan Sylvan): fixes shell   syntax  error make install.
  1738. Give warning on user-files trying  to   load  module  `user' or `system'
  1739. (this is why library(system) could not   be loaded).  Fixed whereis/1 to
  1740. find locations of predicates.   Fixed   trace/[1,2]  to  avoid low-level
  1741. errors on bad specifications.  Specification now   also  accept the much
  1742. more natural ?- trace(append, fail).  as a shorthand for [+fail].  Added
  1743. autoloader handling to ed/1, listing/1, spy/1 and trace/2.  Manipulating
  1744. not-yet-loaded autoload predicates will trap the autoloader.  Added hook
  1745. for help-system, so we provide a   decent help-window when running under
  1746. the XPCE graphical environment.  The   hook  is called show_help_file/2.
  1747. Fixed  rename_file/2  (bug  introduced  in  pl-1.9.2).   Fixed  versions
  1748. Windows-specific problems.  Added  prolog_to_os_filename/2   to  convert
  1749. between internal and external names (DOS/Windows).  Integrated the 1.9.4
  1750. patches for the Windows  version.   Fixed   to  compile  on  AIX.  Fixed
  1751. compilation on some Solaris version.
  1752.  
  1753. Version  1.9.3.   Fix  index/1  problem    introduced   in  1.9.2.   Fix
  1754. stack-expansion problem in all versions that   lack hardware support for
  1755. stack-expansion.  Some cleanup in pl-gc.c to make clean compilation with
  1756. -Wall  and  -DO_DEBUG  possible.   Regenerated   common  prototype  file
  1757. pl-funcs.h using mkproto tool (and some editing).
  1758.  
  1759. Version 1.9.2.  Configuration is  now  based   on  GNU's  autoconf.  All
  1760. md-*.h files have been removed from  the distribution.  $arch/2, $home/1
  1761. and $version/1 have been replaced by feature/2.  A predicate read_link/3
  1762. has been added to read symbolic links.   Installation is tested on SunOs
  1763. 4.1.3, Solaris 2.3 and Linux 1.0.9 with readline 2.0.3.
  1764.  
  1765. Version 1.9.1.  Added: Windows DDE   interface,  Added Unix/System-V (?)
  1766. interface to dlopen() and friends to access shared objects dynamically.
  1767.  
  1768. Version 1.9.0.  Incorporation of various  ports: md-netbsd.h, md-mswin.h
  1769. and  md-msdos.h.   There  is  a  binary   distribution  for  Windows  in
  1770. win-pl.tgz of the main ftp server (swi.psy.uva.nl).  The DOS and Windows
  1771. versions are created using the WATCOM-C/32 toolkit.
  1772.  
  1773.  
  1774. =======================================================================
  1775. Version 1.8.12.  Fixed tracer option `f' (fail) used on the exit port of
  1776. a goal.  Thanks to Thomas Hoppe.
  1777.  
  1778. Version 1.8.8.  Fix  in  the  parser   to  avoid  some  bad syntax-error
  1779. messages.  Also fixed spurious crashes   trying to read bad-syntax-terms
  1780. of the form ?- atom,.
  1781.  
  1782. New in the quintus.pl library:  initialization/1, random/3, numbervars/3
  1783. and absolute_file_name/3.
  1784.  
  1785. Version  1.8.7  includes   the    catch/throw-like   control  structures
  1786. block(+Label,  +Goal,  -Rval),  fail(+Label),  exit(+Label,  +Rval)  and
  1787. !(+Label).  Also new is explain(+Anything) which will  try to tell you a
  1788. lot of what the system knows about  the term you entered.  Additions and
  1789. suggesions are welcome.  Also new: library(bim): A partial Prolog-by-BIM
  1790. (tm) compatibility package by Henk Vandecasteele.  Thanks.
  1791.  
  1792. Further fixes:
  1793.  
  1794.     * Bug in detecting stack-overflow for the PC/linux version.
  1795.     * Handling of SWI_HOME_DIR (fixes installation problem for
  1796.        XPCE/SWI-Prolog).
  1797.     * atom_length/2: give warning (instead of crash) on invalid
  1798.       data-type (e.g. unbound, term).
  1799.     * nth_clause/3: Removed errornous warning when cut-off and
  1800.       fixed returning 0-reference for defined predicates without
  1801.       clauses.
  1802.  
  1803. Version 1.8.6 defines phrase/[2,3] for accessing grammar rules and fixes
  1804. name/2 for numbers outside the  integer   range  (yielding  a float).  A
  1805. predicate nth_clause/3 is added to provide access to specific clauses of
  1806. predicates.  xmalloc(), xrealloc() are added to   fix some problems when
  1807. linking with gnu-libraries.
  1808.  
  1809. Version 1.8.5 contains a few fixes  for the SunOs-4/gcc-2.5 combination.
  1810. DONOT USE GCC-2.5.[123] as the optimiser   appears broken.  gcc-2.5.4 is
  1811. ok again.
  1812.  
  1813. Version 1.8.4 fixes =@=/2, contains a more  logical form of arg/3, fixes
  1814. passing empty-string arguments from the   Prolog  command-line and fixes
  1815. some things for old non-ansi compilers.    There  are some extensions to
  1816. the quintus.pl compatibility library.
  1817.  
  1818. Version 1.8.3 Fixes some  more  readline   problems  having  to  do with
  1819. running SWI-Prolog as an inferior process under EMACS.
  1820.  
  1821. Version 1.8.2 fixes some serious  problems   in  the tracer intoduced by
  1822. more global changes in 1.8.0.
  1823.  
  1824. Version 1.8.1 fixes load_foreign for  both   SunOs  4.1.3  and PC/Linux.
  1825. Extensive use of the stat(2) system call is reduced with some changes to
  1826. the file administration.  This speeds up loading  many small files by an
  1827. incredible amount, notably when reading over a (slow) network.
  1828.  
  1829. The manual is  regenerated.   There  are   not  many  changes,  but  the
  1830. PostScript files in these archives are  totally different as we upgrated
  1831. LaTeX and dvips.  Therefore  the   patch  file **diff-1.8.0-1.8.1** does
  1832. *not* include the patches to the PostScript manual.
  1833.  
  1834. Version 1.8.0 includes a stack  shifter,   enabling  dynamic  stacks for
  1835. machines that do not offer hardware support by providing suitable access
  1836. to  the  virtual  memory  management.    Fixed    a   bug  in  concat/3.
  1837. expand_file/2 is now sensitive to fileerrors/2   while expanding $var or
  1838. ~user.   More  bugfixes  to  the    readline   interface.   Manual  page
  1839. contributed by Dave Sherrat.   RS6000  port   no  longer  uses -lbsd and
  1840. compiles on gcc.
  1841.  
  1842. ================================================================
  1843. Version 1.7.2 should compile on Solaris 2.2   using gcc 2.4.5.  It fixes
  1844. the usual couple of portability problems,   the  terminal interface when
  1845. connected  to  the  XPCE  graphics  library.     It  ads  line_count  to
  1846. predicate_property to support a future graphical debugging tool.
  1847.  
  1848. Version 1.7.1 fixes a very serious   memory  allocation violation in the
  1849. connection to the readline library.  Make sure to update from 1.7.0!
  1850.  
  1851. Version 1.7.0 contains a version linked   with  the GNU readline library
  1852. for  bash/tcsh  compatible  line  editing.    The  library  readline  is
  1853. distributed separately and must be   installed before installing prolog.
  1854. The  file  readline-1.1.tar.gz  contains  the  unmodified  GNU  sources.
  1855. librl-1.1.tar.z contains the binaries for PC/Linux.
  1856.  
  1857. ================================================================
  1858. Version 1.6.18 contains a fix to load_foreign/[2,5] for PC/Linux.
  1859.  
  1860. [Version 1.6.17 has been reinstalled at Jun  1 23:16 with two prototype
  1861. fixes and a fix to save_program/1 necessary for the RS6000.]
  1862.  
  1863. Version 1.6.17 fixes  some  minor   installation  problems  reported for
  1864. 1.6.16.  The online manual has been   updated for trace/[1,2].  Callback
  1865. of undefined Prolog-predicates from C now correctly trap the autoloader.
  1866. Analysis of the PATH variable to  find   the  Prolog executable has been
  1867. fixed.  Nothing serious if you have a running system!
  1868.  
  1869. Version 1.6.16 integrates port to 386  System-V   Unix  made  by Eric S.
  1870. Raymond (esr@snark.thyrsus.com), who also ported   the  shell scripts to
  1871. use sh rather than csh.  The new   predicates  trace/1 and trace/2 allow
  1872. for tracing individual predicates non-interactively.
  1873.  
  1874. Version 1.6.15  eliminates  some  compiler  limits,   fixes  a  bug  in
  1875. trail-stacks management and provides a much   better  port for PC/Linux.
  1876. Requires Linux kernel 99pl7 or later.
  1877.  
  1878. Version 1.6.14 provides 8 bit character  support.  All characters in the
  1879. range 128 ...  255 are treated as   lowercase letters.  op/3 is fixed to
  1880. actually delete operators when priority 0 is specified.
  1881.  
  1882. Version 1.6.13 implements  standard  order   compatible  to  Quintus and
  1883. contains  a  fix  of  the  module  system  which  broke  the  Quintus.pl
  1884. replacement of retractall/1.
  1885.  
  1886. Version 1.6.12 is te result of  integrating   ports  to  LINUX, OS/2 and
  1887. HP/UX with the main-stream (SunOs).
  1888.